package com.yfbao.poll.demo.message;

/**
 * 消息的基类
 * 长轮询监听的消息基类
 * 建议此消息不易过大（考虑高并发场景，目前后台需要缓存最多3分钟）
 */
public abstract class BasePollMessage {

    //消息id,要求递增（目前评估由于会话粘连，用户的同类型消息触发会在同一服务节点，取节点的时间为消息id，
    // 在并发度不高时，基本满足需求）
    //todo:后续如果出现问题，可以考虑再集群模式时切换为redis获取自增主键
    private Long msgId;
    //消息类型
    private String msgType;
    //消息所属用户
    private String loginName;
    //具体的消息内容
    private Object msgInfo;

    private Long timestamp;

    public BasePollMessage(String msgType, String loginName, Object msgInfo){
        this.msgId=System.currentTimeMillis();
        this.msgType=msgType;
        this.loginName=loginName;
        this.msgInfo=msgInfo;
        this.timestamp = System.currentTimeMillis();
    }

    public Long getMsgId() {
        return msgId;
    }

    public void setMsgId(Long msgId) {
        this.msgId = msgId;
    }

    public String getMsgType() {
        return msgType;
    }

    public void setMsgType(String msgType) {
        this.msgType = msgType;
    }

    public String getLoginName() {
        return loginName;
    }

    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }

    public Object getMsgInfo() {
        return msgInfo;
    }

    public void setMsgInfo(Object msgInfo) {
        this.msgInfo = msgInfo;
    }

    public Long getTimestamp() {
        return timestamp;
    }

    public void setTimestamp(Long timestamp) {
        this.timestamp = timestamp;
    }

}
